think like a developer